1 using ProceduralToolkit.Examples.UI;
2 using UnityEngine;
3
4 namespace ProceduralToolkit.Examples
5 {
6 public class BreakoutConfigurator : ConfiguratorBase
7 {
8 public RectTransform leftPanel;
9 [Space]
10 public Breakout.Config config = new Breakout.Config();
11
12 private Breakout breakout;
13
14 private void Awake()
15 {
16 breakout = new Breakout();
17 Generate();
18 SetupSkyboxAndPalette();
19
20 InstantiateControl<TextControl>(leftPanel).Initialize("Use A/D or Left/Right to move");
21
22 InstantiateControl<SliderControl>(leftPanel)
23 .Initialize("Wall width", 1, 20, config.wallWidth, value =>
24 {
25 config.wallWidth = value;
26 Generate();
27 });
28
29 InstantiateControl<SliderControl>(leftPanel)
30 .Initialize("Wall height", 1, 20, config.wallHeight, value =>
31 {
32 config.wallHeight = value;
33 Generate();
34 });
35
36 InstantiateControl<SliderControl>(leftPanel)
37 .Initialize("Wall height offset", 1, 10, config.wallHeightOffset, value =>
38 {
39 config.wallHeightOffset = value;
40 Generate();
41 });
42
43 InstantiateControl<SliderControl>(leftPanel)
44 .Initialize("Paddle width", 1, 10, config.paddleWidth, value =>
45 {
46 config.paddleWidth = value;
47 Generate();
48 });
49
50 InstantiateControl<SliderControl>(leftPanel)
51 .Initialize("Ball size", 0.5f, 3f, config.ballSize, value =>
52 {
53 config.ballSize = value;
54 Generate();
55 });
56
57 InstantiateControl<SliderControl>(leftPanel)
58 .Initialize("Ball velocity", 1, 20, config.ballVelocityMagnitude, value =>
59 {
60 config.ballVelocityMagnitude = value;
61 Generate();
62 });
63
64 InstantiateControl<ButtonControl>(leftPanel).Initialize("Generate", Generate);
65 }
66
67 private void Update()
68 {
69 breakout.Update();
70
71 UpdateSkybox();
72 }
73
74 private void Generate()
75 {
76 GeneratePalette();
77
78 config.gradient = ColorE.Gradient(GetMainColorHSV(), GetSecondaryColorHSV());
79
80 breakout.Generate(config);
81 }
82 }
83 }